extends 基础弹窗类

@onready var 关闭按钮 = %"关闭按钮"
@onready var 帮助按钮 = %"帮助按钮"
@onready var 区域名 = %"区域名"
@onready var 操作容器 = %"操作容器"
@onready var 探索区卡牌堆 = %"探索区卡牌堆"
@onready var 探索进度条 = %"探索进度条"

const 按钮容器场景:=preload("res://按钮/动作按钮容器.tscn")

var 区域数据:区域数据类:
	set(value):
		if 区域数据!=null:
			区域数据.探索进度变化.disconnect(显示探索进度)
		区域数据=value
		if 区域数据!=null:
			区域数据.探索进度变化.connect(显示探索进度)	
			
var 探索区卡牌数据:Array[卡牌堆数据类]=[null,null,null,null,null]		

signal 显示区域信息窗口

func _ready():
	关闭按钮.按钮被点击.connect(当关闭按钮被点击)
	
func 当关闭按钮被点击():
	关闭()

func 显示区域信息():
	显示区域信息窗口.emit()
	区域名.text=区域数据.区域名
	显示探索进度()
	显示操作按钮()
	show()

func 显示操作按钮():
	for 按钮 in 操作容器.get_children():
		操作容器.remove_child(按钮)
		按钮.queue_free()
	
	for 动作数据 in 区域数据.动作列表:
		添加动作(动作数据)
	
func 添加动作(动作数据:动作数据类):
	var 动作按钮:=按钮容器场景.instantiate()
	操作容器.add_child(动作按钮)
	动作按钮.动作数据=动作数据
	动作按钮.按钮被点击.connect(当按钮被点击)
			
func 显示探索进度():
	探索进度条.显示进度(区域数据)
	
func 当按钮被点击(_index:int):
	#var 按钮=操作容器.get_child(index)
	#var 动作数据=按钮.动作数据
	#if 动作数据 is 探索动作类:
		#清空卡牌数据()
		#var 探索物信息列表=动作数据.探索区域(区域数据)
		#for 探索物信息 in 探索物信息列表:
			#var 探索物id=探索物信息.keys()[0]
			#var 探索物=GameFactory.生成卡牌(探索物id)
			#var 卡牌堆数据=卡牌堆数据类.new()
			#卡牌堆数据.添加卡牌(探索物)
			#添加卡牌数据(卡牌堆数据)
		#显示探索物()
		#var 探索确认=ActionFactory.生成动作("探索确认")
		#添加动作(探索确认)
		#按钮.hide()
	#elif 动作数据 is 探索确认类:
		#for 卡牌堆数据 in 探索区卡牌数据:
			#区域数据.添加卡牌堆(卡牌堆数据)
		#清空卡牌数据()
		#显示探索物()
		#操作容器.remove_child(按钮)
		#按钮.queue_free()
		#显示操作按钮()
	pass
		
func 清空卡牌数据():
	for index in range(探索区卡牌数据.size()):
		探索区卡牌数据[index]=null

func 添加卡牌数据(卡牌数据:卡牌堆数据类):
	for index in range(探索区卡牌数据.size()):
		if 探索区卡牌数据[index]==null:
			探索区卡牌数据[index]=卡牌数据	
			break
			
func 显示探索物():
	var 卡牌堆列表=探索区卡牌堆.get_children()
	for index in range(探索区卡牌数据.size()):
		卡牌堆列表[index].卡牌堆数据=探索区卡牌数据[index]
